package com.liner.homework;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Homework01 {

    static Random random = new Random();

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);


        /*
        * 1. MaxOfArray求数组元素最大值并放在最后一个元素的下一个位置

           要求：声明整型数组并填充随机数据，找到最大值，将数组扩容并将最大值放末尾

         */

        System.out.println("第1题:");
        //第1遍

        int[] array = new int[12];
        for (int i = 0; i < array.length; i++) {
            array[i] = (int) (Math.random() * 100);
        }

        System.out.println("随机生成数组：");
        for (int i : array) {
            System.out.print(i + "\t");
        }

        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        System.out.println("\nmax:" + max);
        array = Arrays.copyOf(array, array.length + 1);
        array[array.length - 1] = max;

        System.out.println("将数组扩容并将最大值放置末尾：");
        for (int i : array) {
            System.out.print(i + "\t");
        }

        System.out.println();
        //第2遍

        System.out.print("请输入要生成的数组长度:");
        int len = scanner.nextInt();
        System.out.print("请输入要生成数组随机数范围:");
        int rand = scanner.nextInt();
        int[] arr = new int[len];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(rand + 1);
        }

        System.out.println("生成数组展示：");
        System.out.println(Arrays.toString(arr));

        System.out.println("生成数组升序排序展示：");
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        max = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        System.out.println("最大值为:" + max);
        arr = Arrays.copyOf(arr, arr.length + 1);
        arr[arr.length - 1] = max;

        System.out.println("将数组扩容并将最大值放置末尾：");
        System.out.println(Arrays.toString(arr));



        /*

           3. 方法的练习：

           要求：

           - 定义say()无参无返回值方法，调用测试
           - 定义say()有一个参无返回值方法，调用测试
           - 定义say()有两个参无返回值的方法，调用测试
           - 定义getNum()无参有返回值方法，演示return的用法，调用测试
           - 定义plus()两个参有返回值方法，调用测试
           - 定义generateArray()用于生成整型数组填充随机数并返回数组，调用测试

        * */
        System.out.println("第2题:");
        //第1遍

        //    - 定义say()无参无返回值方法，调用测试
        say();
        //    - 定义say()有一个参无返回值方法，调用测试
        say("Bob");
        //    - 定义say()有两个参无返回值的方法，调用测试
        say("张三", '男');
        //    - 定义getNum()无参有返回值方法，演示return的用法，调用测试
        System.out.println("getNum()方法的返回值：" + getNum());
        //    - 定义plus()两个参有返回值方法，调用测试
        System.out.println("12 + 123 = " + plus(12, 123));
        //    - 定义generateArray()用于生成整型数组填充随机数并返回数组，调用测试
        int[] array1 = generateArray();
        System.out.println(Arrays.toString(array1));

        //第2遍

        say();
        say("Jack");
        say("小美", '女');
        System.out.println("getNum()方法的返回值：" + getNum());

        System.out.println("请输入一个整数：");
        int num1 = scanner.nextInt();
        System.out.println("请再输入一个整数：");
        int num2 = scanner.nextInt();
        System.out.println(num1 + " + " + num2 + " = " + plus(num1, num2));
        int[] array2 = generateArray();
        System.out.println(Arrays.toString(array2));
    }

    /**
     * 定义say()无参无返回值方法，调用测试
     */
    public static void say() {
        System.out.println("你好哈");
    }

    /**
     * 定义say()有一个参无返回值方法，调用测试
     *
     * @param name
     */
    public static void say(String name) {
        System.out.println("Hello,My name is " + name);
    }

    /**
     * 定义say()有两个参无返回值的方法，调用测试
     *
     * @param name
     * @param gender
     */
    public static void say(String name, char gender) {
        System.out.println("你好，我是" + name + "我是个" + gender);
    }

    /**
     * 定义getNum()无参有返回值方法，演示return的用法，调用测试
     *
     * @return
     */
    public static int getNum() {
        return 12;
    }

    /**
     * 定义plus()两个参有返回值方法，调用测试
     *
     * @param num1
     * @param num2
     * @return
     */
    public static int plus(int num1, int num2) {
        return num1 + num2;
    }


    /**
     * 定义generateArray()用于生成整型数组填充随机数并返回数组，调用测试
     *
     * @return
     */
    public static int[] generateArray() {
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = random.nextInt(100);
        }
        return arr;
    }

}
